<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content=
    "application/xhtml+xml; charset=utf-8" />
    <title>
      6.25.&nbsp;Shadow-4.4
    </title>
    <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
    "text/css" media="print" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  </head>
  <body class="lfs" id="lfs-8.0">
    <div class="navheader">
      <h4>
        Linux From Scratch - Version 8.0
      </h4>
      <h3>
        第六章&nbsp;安装基本系统软件
      </h3>
      <ul>
        <li class="prev">
          <a accesskey="p" href="sed.html" title="Sed-4.4">上一页</a>
          <p>
            Sed-4.4
          </p>
        </li>
        <li class="next">
          <a accesskey="n" href="psmisc.html" title="Psmisc-22.21">下一页</a>
          <p>
            Psmisc-22.21
          </p>
        </li>
        <li class="up">
          <a accesskey="u" href="chapter06.html" title=
          "第六章&nbsp;安装基本系统软件">返回</a>
        </li>
        <li class="home">
          <a accesskey="h" href="../index.html" title=
          "Linux From Scratch - Version 8.0 ">主页</a>
        </li>
      </ul>
    </div>
    <div class="wrap" lang="en" xml:lang="en">
      <h1 class="sect1">
        <a id="ch-system-shadow" name="ch-system-shadow"></a>6.25. Shadow-4.4
      </h1>
      <div class="package" lang="en" xml:lang="en">
        <p>
          Shadow 软件包包含了以安全方式处理密码的程序
        </p>
        <div class="segmentedlist">
          <div class="seglistitem">
            <div class="seg">
              <strong class="segtitle">预计构建时间:</strong>
              <span class="segbody">0.2 SBU</span>
            </div>
            <div class="seg">
              <strong class="segtitle">所需磁盘空间:</strong>
              <span class="segbody">42 MB</span>
            </div>
          </div>
        </div>
      </div>
      <div class="installation" lang="en" xml:lang="en">
        <h2 class="sect2">
          6.25.1. 安装 Shadow
        </h2>
        <div class="admon note">
          <img alt="[Note]" src="../images/note.png" />
          <h3>
            注意
          </h3>
          <p>
            如果你希望强制使用强密码，在构建 Shadow前参考
			<a class="ulink" href=
            "http://www.linuxfromscratch.org/blfs/view/8.0/postlfs/cracklib.html">
            http://www.linuxfromscratch.org/blfs/view/8.0/postlfs/cracklib.html</a>
			安装 CrackLib. 然后在<span class="command"><strong>configure</strong></span>命令后增加
            <em class="parameter"><code>--with-libcrack</code></em> 参数。
          </p>
        </div>
        <p>
          不要在此处安装 <span class=
          "command"><strong>groups</strong></span> 程序和对应的帮助页面，
		  因为 Coreutils 软件包里会提供一个更好的版本。同样也需要将手册页面的安装排除在<a class="xref" href="man-pages.html#man-pages"><code class="filename">帮助页面</code></a> 包安装过程之外:
        </p>
        <pre class="userinput">
<kbd class="command">sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /'   {} \;
find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
find man -name Makefile.in -exec sed -i 's/passwd\.5 / /'   {} \;</kbd>
</pre>
        <p>
          <a id="shadow-login_defs" name="shadow-login_defs"></a>除了默认的 <span class="emphasis"><em>crypt</em></span>方法外，还可使用更安全的 <span class=
          "emphasis"><em>SHA-512</em></span> 方法进行密码加密，一样允许密码的长度超过8位。 有必要将用户邮箱目录从默认但是已经过时的 <code class=
          "filename">/var/spool/mail</code> 目录更改至现在常用的 <code class=
          "filename">/var/mail</code> 目录:
        </p>
        <pre class="userinput">
<kbd class=
"command">sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
       -e 's@/var/spool/mail@/var/mail@' etc/login.defs</kbd>
</pre>
        <p>
          现在修正一个阻止 <span class=
          "command"><strong>useradd</strong></span> 命令在 /etc/passwd 文件中设置 shell 条目的 bug. 这里，我们制作一个简短的补丁，可以直接在这里包含而无需单独的补丁文件:
        </p>
        <pre class="userinput">
<kbd class="command">echo '--- src/useradd.c   (old)
+++ src/useradd.c   (new)
@@ -2027,6 +2027,8 @@
        is_shadow_grp = sgr_file_present ();
 #endif
 
+       get_defaults ();
+
        process_flags (argc, argv);
 
 #ifdef ENABLE_SUBIDS
@@ -2036,8 +2038,6 @@
            (!user_id || (user_id &lt;= uid_max &amp;&amp; user_id &gt;= uid_min));
 #endif                         /* ENABLE_SUBIDS */
 
-       get_defaults ();
-
 #ifdef ACCT_TOOLS_SETUID
 #ifdef USE_PAM
        {' | patch -p0 -l</kbd>
</pre>
        <div class="admon note">
          <img alt="[Note]" src="../images/note.png" />
          <h3>
            注意
          </h3>
          <p>
            如果你选择了构建 Cracklib 支持下的 Shadow ，运行如下:
          </p>
          <pre class="userinput">
<kbd class=
"command">sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs</kbd>
</pre>
        </div>
        <p>
          进行一个小更改，使默认的 useradd 与 LFS 组文件一致:
        </p>
        <pre class="userinput">
<kbd class="command">sed -i 's/1000/999/' etc/useradd</kbd>
</pre>
        <p>
          修正一个上游发现的安全问题:
        </p>
        <pre class="userinput">
<kbd class="command">sed -i -e '47 d' -e '60,65 d' libmisc/myname.c</kbd>
</pre>
        <p>
          准备编译 Shadow:
        </p>
        <pre class="userinput">
<kbd class=
"command">./configure --sysconfdir=/etc --with-group-name-max-length=32</kbd>
</pre>
        <div class="variablelist">
          <p class="title">
            <strong>configure 选项的含义:</strong>
          </p>
          <dl class="variablelist">
            <dt>
              <span class="term"><em class=
              "parameter"><code>--with-group-name-max-length=32</code></em></span>
            </dt>
            <dd>
              <p>
                用户名的最大长度为 32 个字符。 用户组名称最大长度也是32个字符。
              </p>
            </dd>
          </dl>
        </div>
        <p>
          编译该软件包:
        </p>
        <pre class="userinput">
<kbd class="command">make</kbd>
</pre>
        <p>
          该软件包不含测试套件.
        </p>
        <p>
          安装该软件包:
        </p>
        <pre class="userinput">
<kbd class="command">make install</kbd>
</pre>
        <p>
          将程序放置到正确的位置:
        </p>
        <pre class="userinput">
<kbd class="command">mv -v /usr/bin/passwd /bin</kbd>
</pre>
      </div>
      <div class="configuration" lang="en" xml:lang="en">
        <h2 class="sect2">
          <a id="conf-shadow" name="conf-shadow"></a>6.25.2. 配置 Shadow
        </h2>
        <p>
          该软件包包含了增、删、改用户和组的工具; 设置和更改密码；并且执行其它管理任务。有关 <span class=
          "emphasis"><em>password shadowing</em></span> 的详细说明means, 请见内核源码中的see the
          <code class="filename">doc/HOWTO</code> 文件。 如果使用Shadow支持，请记住，需要验证密码的程序（显示管理器，FTP程序，pop3守护程序等）必须符合Shadow要求。 也就是说，他们需要能够使用影子( shadow )密码。
        </p>
        <p>
          为了能够让用户密码使用影子( shadow )密码，运行如下命令:
        </p>
        <pre class="userinput">
<kbd class="command">pwconv</kbd>
</pre>
        <p>
          为了能够让组密码使用影子( shadow )密码，运行:
        </p>
        <pre class="userinput">
<kbd class="command">grpconv</kbd>
</pre>
        <p>
          Shadow 中关于 <span class=
          "command"><strong>useradd</strong></span> 的配置有一些需要解释的注意事项。首先，
          <span class="command"><strong>useradd</strong></span> 在创建用户时默认创建了与用户同名的组。默认情况下，用户ID（UID）和组ID（GID）编号将从1000开始。 这意味着如果你不加参数的使用 <span class=
          "command"><strong>useradd</strong></span>, 每个用户都会对应一个单独的用户组, 若不想如此，就需要指定 <em class=
          "parameter"><code>-g</code></em> 参数给<span class=
          "command"><strong>useradd</strong></span>命令。默认参数被存储在 <code class=
          "filename">/etc/default/useradd</code> 文件中。 你需要更改该文件中的两个参数来满足特定的需求。
        </p>
        <div class="variablelist">
          <p class="title">
            <strong><code class="filename">/etc/default/useradd</code>
            参数说明</strong>
          </p>
          <dl class="variablelist">
            <dt>
              <span class="term"><em class=
              "parameter"><code>GROUP=1000</code></em></span>
            </dt>
            <dd>
              <p>
                该参数设置/etc/group 文件中用户组号的开始值。该值可随需更改，但是需要注意 You can modify it to anything you
                desire. Note that <span class=
                "command"><strong>useradd</strong></span> 命令不会重复使用
                UID 或 GID. 如果给定的数字已经被用过，就会自动跳过它使用后一个数字。同样需要注意，如果你的系统中没有编号为1000的用户组，则在第一次使用<span class=
                "command"><strong>useradd</strong></span> 命令却不加
                <em class="parameter"><code>-g</code></em> 参数时, 你就会在终端上看到一条信息:
                <code class="computeroutput">useradd: unknown GID
                1000</code>. 可以忽略它，用户组编号1000会自动采用。
              </p>
            </dd>
            <dt>
              <span class="term"><em class=
              "parameter"><code>CREATE_MAIL_SPOOL=yes</code></em></span>
            </dt>
            <dd>
              <p>
                该参数会导致<span class=
                "command"><strong>useradd</strong></span> 命令为新创建的用户创建一个邮箱文件。 <span class=
                "command"><strong>useradd</strong></span> 命令将使这个<code class=
                "systemitem">mail</code>组文件具备0660权限。如果你不想用
                <span class="command"><strong>useradd</strong></span>创建邮箱文件, 如下操作:
              </p>
              <pre class="userinput">
<kbd class="command">sed -i 's/yes/no/' /etc/default/useradd</kbd>
</pre>
            </dd>
          </dl>
        </div>
      </div>
      <div class="configuration" lang="en" xml:lang="en">
        <h2 class="sect2">
          6.25.3. 设置 root 密码
        </h2>
        <p>
          设置 <span class=
          "emphasis"><em>root</em></span> 用户密码:
        </p>
        <pre class="userinput">
<kbd class="command">passwd root</kbd>
</pre>
      </div>
      <div class="content" lang="en" xml:lang="en">
        <h2 class="sect2">
          <a id="contents-shadow" name="contents-shadow"></a>6.25.4. Shadow 的内容
        </h2>
        <div class="segmentedlist">
          <div class="seglistitem">
            <div class="seg">
              <strong class="segtitle">安装的程序:</strong>
              <span class="segbody">chage, chfn, chgpasswd, chpasswd, chsh,
              expiry, faillog, gpasswd, groupadd, groupdel, groupmems,
              groupmod, grpck, grpconv, grpunconv, lastlog, login, logoutd,
              newgidmap, newgrp, newuidmap, newusers, nologin, passwd, pwck,
              pwconv, pwunconv, sg (link to newgrp), su, useradd, userdel,
              usermod, vigr (link to vipw), and vipw</span>
            </div>
            <div class="seg">
              <strong class="segtitle">Installed directory:</strong>
              <span class="segbody">/etc/default</span>
            </div>
          </div>
        </div>
        <div class="variablelist">
          <h3>
            简要描述
          </h3>
          <table border="0" class="variablelist">
            <colgroup>
              <col align="left" valign="top" />
              <col />
            </colgroup>
            <tbody>
              <tr>
                <td>
                  <p>
                    <a id="chage" name="chage"></a><span class=
                    "term"><span class=
                    "command"><strong>chage</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用于更改强制性密码更改的最大间隔天数
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="chfn" name="chfn"></a><span class=
                    "term"><span class=
                    "command"><strong>chfn</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用于更改用户的全名和其他信息
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="chgpasswd" name="chgpasswd"></a><span class=
                    "term"><span class=
                    "command"><strong>chgpasswd</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用于在批处理模式下更新用户密码
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="chpasswd" name="chpasswd"></a><span class=
                    "term"><span class=
                    "command"><strong>chpasswd</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用来更新用户Used to update user passwords in batch mode
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="chsh" name="chsh"></a><span class=
                    "term"><span class=
                    "command"><strong>chsh</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用于更改用户的默认登录 shell
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="expiry" name="expiry"></a><span class=
                    "term"><span class=
                    "command"><strong>expiry</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    检查并强制执行当前的密码到期策略
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="faillog" name="faillog"></a><span class=
                    "term"><span class=
                    "command"><strong>faillog</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用于检查登录失败的日志，在账户被阻止前去设置最大的失败次数或是重置失败次数。
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="gpasswd" name="gpasswd"></a><span class=
                    "term"><span class=
                    "command"><strong>gpasswd</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用于为用户组添加和删除成员和管理员
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="groupadd" name="groupadd"></a><span class=
                    "term"><span class=
                    "command"><strong>groupadd</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    创建给定名称的用户组
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="groupdel" name="groupdel"></a><span class=
                    "term"><span class=
                    "command"><strong>groupdel</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    删除给定名称的用户组
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="groupmems" name="groupmems"></a><span class=
                    "term"><span class=
                    "command"><strong>groupmems</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    允许用户管理他/她自己的组成员列表，而不需要超级用户权限。
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="groupmod" name="groupmod"></a><span class=
                    "term"><span class=
                    "command"><strong>groupmod</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    被用来改变给定用户组的名称或者 GID
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="grpck" name="grpck"></a><span class=
                    "term"><span class=
                    "command"><strong>grpck</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    验证组文件 <code class=
                    "filename">/etc/group</code> 和 <code class=
                    "filename">/etc/gshadow</code>的完整性
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="grpconv" name="grpconv"></a><span class=
                    "term"><span class=
                    "command"><strong>grpconv</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用普通组文件创建或者更新shadow 组文件
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="grpunconv" name="grpunconv"></a><span class=
                    "term"><span class=
                    "command"><strong>grpunconv</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    以<code class="filename">/etc/gshadow</code>内容为准更新 <code class="filename">/etc/group</code> 并删除前者
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="lastlog" name="lastlog"></a><span class=
                    "term"><span class=
                    "command"><strong>lastlog</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    报告所有用户或给定用户的最近登录情况
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="login" name="login"></a><span class=
                    "term"><span class=
                    "command"><strong>login</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    系统用来让用户登录
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="logoutd" name="logoutd"></a><span class=
                    "term"><span class=
                    "command"><strong>logoutd</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    强制限制登录时间和端口的守护程序
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="newgidmap" name="newgidmap"></a><span class=
                    "term"><span class=
                    "command"><strong>newgidmap</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用于设置用户命名空间的 GID 映射
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="newgrp" name="newgrp"></a><span class=
                    "term"><span class=
                    "command"><strong>newgrp</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用于在登录会话期间更改当前的 GID
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="newuidmap" name="newuidmap"></a><span class=
                    "term"><span class=
                    "command"><strong>newuidmap</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用于设置用户命名空间的 UID 映射
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="newusers" name="newusers"></a><span class=
                    "term"><span class=
                    "command"><strong>newusers</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    常被用作创建或者更新一系列的用户账号
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="nologin" name="nologin"></a><span class=
                    "term"><span class=
                    "command"><strong>nologin</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    当账户不可用的时候显示一个消息；它被设计用作已被禁用帐户的默认 shell
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="passwd" name="passwd"></a><span class=
                    "term"><span class=
                    "command"><strong>passwd</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    常被用来更改用户或者用户组账号的密码
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="pwck" name="pwck"></a><span class=
                    "term"><span class=
                    "command"><strong>pwck</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    验证 <code class=
                    "filename">/etc/passwd</code> 和 <code class=
                    "filename">/etc/shadow</code> 密码文件的完整性
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="pwconv" name="pwconv"></a><span class=
                    "term"><span class=
                    "command"><strong>pwconv</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用普通密码文件创建或者更新 shadow 密码文件
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="pwunconv" name="pwunconv"></a><span class=
                    "term"><span class=
                    "command"><strong>pwunconv</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    以<code class="filename">/etc/shadow</code>内容为准更新 <code class="filename">/etc/passwd</code>，并删除前者
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="sg" name="sg"></a><span class="term"><span class=
                    "command"><strong>sg</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    当用户的GID设置为给定组的GID时，执行给定的命令
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="su" name="su"></a><span class="term"><span class=
                    "command"><strong>su</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    运行带有指代用户和组ID的 shell
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="useradd" name="useradd"></a><span class=
                    "term"><span class=
                    "command"><strong>useradd</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    用给定的名称创建一个新的用户，或者是更新默认的新用户信息
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="userdel" name="userdel"></a><span class=
                    "term"><span class=
                    "command"><strong>userdel</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    删除给定的用户账户
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="usermod" name="usermod"></a><span class=
                    "term"><span class=
                    "command"><strong>usermod</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    常用来更改给定用户的登录名、用户ID(UID) 、shell、初始用户组、 home路径等。
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="vigr" name="vigr"></a><span class=
                    "term"><span class=
                    "command"><strong>vigr</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    编辑 <code class="filename">/etc/group</code> 或
                    <code class="filename">/etc/gshadow</code> 文件
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
                    <a id="vipw" name="vipw"></a><span class=
                    "term"><span class=
                    "command"><strong>vipw</strong></span></span>
                  </p>
                </td>
                <td>
                  <p>
                    编辑 <code class="filename">/etc/passwd</code> 或
                    <code class="filename">/etc/shadow</code> 文件
                  </p>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
    </div>
    <div class="navfooter">
      <ul>
        <li class="prev">
          <a accesskey="p" href="sed.html" title="Sed-4.4">上一页</a>
          <p>
            Sed-4.4
          </p>
        </li>
        <li class="next">
          <a accesskey="n" href="psmisc.html" title="Psmisc-22.21">下一页</a>
          <p>
            Psmisc-22.21
          </p>
        </li>
        <li class="up">
          <a accesskey="u" href="chapter06.html" title=
          "第六章&nbsp;安装基本系统软件">返回</a>
        </li>
        <li class="home">
          <a accesskey="h" href="../index.html" title=
          "Linux From Scratch - Version 8.0 ">主页</a>
        </li>
      </ul>
    </div>
  </body>
</html>
